package com.jiang.daily.Q2588;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Jiang
 * @version 1.0
 * @date 2025/03/06 1:09
 */
class Solution {
    // 超时
    // public long beautifulSubarrays(int[] nums) {
    //     long res = 0;
    //     int n = nums.length;
    //     int[] dp = new int[n];
    //     for (int i = 0; i < n; i++) {
    //         for (int j = i; j < n; j++) {
    //             if (i == j) {
    //                 if (nums[j] == 0) {
    //                     res++;
    //                 }
    //                 dp[j] = nums[j];
    //             } else {
    //                 if ((dp[j] = dp[j - 1] ^ nums[j]) == 0) {
    //                     res++;
    //                 }
    //             }
    //         }
    //     }
    //     return res;
    // }

    // 异或 + 前缀和
    public long beautifulSubarrays(int[] nums) {
        Map<Integer, Integer> map = new HashMap<>();
        long res = 0;
        int beauti = 0;
        map.put(0, 1);
        for (int n: nums) {
            beauti ^= n;
            res += map.getOrDefault(beauti, 0);
            map.compute(beauti, (k, v) -> v == null ? 1 : v + 1);
        }
        return res;
    }
}
